[アップデート] Amazon EventBridge のパイプ機能(EventBridge Pipes)でもカスタマーマネージドキーを使った暗号化がサポートされました

[アップデート] Amazon EventBridge のパイプ機能(EventBridge Pipes)でもカスタマーマネージドキーを使った暗号化がサポートされました

Clock Icon2024.09.16

いわさです。

Amplify Gen 2 をバックエンドとするアプリケーションを最近構築しているのですが、バックエンドコンポーネントの接続に EventBridge Pipes を使ってみようかなというシーンがありました。

EventBridge Pipes というのは 2022 年の re:Invent で登場した EventBridge の機能です。

https://dev.classmethod.jp/articles/amazon-eventbridge-pipes-released/

今回 DynamoDB ストリームをソースとしたかったので EventBridge Pipes 自体は採用出来そうだったのですが、直近のアップデートでカスタマーマネージドキーによる保管時の暗号化をサポートしたことを思い出しました。

https://aws.amazon.com/about-aws/whats-new/2024/09/amazon-eventbridge-pipes-customer-managed-keys/

従来は AWS マネージドキーで透過的に暗号化されていたのですが、先日のアップデートでカスタマーマネージドキーも使えるようになりました。
これまで EventBridge ではイベントバスでのみカスタマーマネージドキーを選択することが出来ていたのですが、新たにパイプでも使えるようになりました。

で、EventBridge Pipes で何を暗号化するのだ?というところだと思いますが、パラメータなどパイプの一部設定の保存に暗号化を行っているようです。なるほど。

https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-encryption-pipes-cmkey.html

今回私は採用しなくても良かったのですが、せっかくなのでカスタマーマネージドキーを無効化した時にパイプがどのような挙動になるのか観察してみましたので紹介します。

パイプの作成

パイプの作成自体は詳細は割愛します。
今回は DynamoDB ストリームをソースをしたかったので、DynamoDB テーブルでストリームの有効化だけはしておきます。

F0FFD4A8-4C30-47DC-8B07-9CBB2893D5CC.png

そうすると EventBridge Pipes でパイプを作成する際に、ソースとして DynamoDB ストリームが選択出来るようになりますので選択します。
ちなみに個別のコンポーネント内では暗号化キーの選択オプションはありませんでした。設定方法は後述します。

3CEBE128-64EA-40CA-B4EA-4C5AEFE32087.png

フィルタリングのイベントパターンも設定します。実際にはもう少し複雑なフィルターなのですが今回はキーの検証用途なので適当にこんな感じにしました。

C5CE1A50-9FEB-43DD-B748-DDE281411467.png

強化(エンリッチメント)は私は不要だったのですが、同様にキーの検証のために設定してみましょう。トランスフォーマーなどのエンリッチメントパラメータも設定しておきます。

8DB045CA-F152-471E-895A-E8A00EEE262F.png

ターゲットは SNS トピックを設定し、エンリッチメントと同様に追加パラメータとしてトランスフォーマーを設定しておきます。内容はあまり意味のない適当なものです。

9CAB15F6-8809-4B9D-9598-57532A0A7429_1_105_c.jpeg

カスタマーマネージドキーをパイプに設定する

事前に KMS でカスタマーマネージドキーを作成しておきます。

80C80644-7C92-48A1-BCAE-C65F97549DE4_4_5005_c.jpeg

で、パイプに対するカスタマーマネージドキーの設定ですが、パイプ設定タブに「暗号化」が追加されてまして、こちらから AWS マネージドキーかカスタマーマネージドキーかを選択出来るようになっています。
「別の AWS KMS キーを選択する(詳細)」を選択し、カスタマーマネージドキーの ARN を入力(選択)します。

EFCDE50C-B8DC-410D-A82C-A74EE724D19D.png

ちなみに設定したキーは、パイプ詳細下段の暗号化タブからも確認が可能です。

B636C828-8410-4ABD-BBDE-CCB5A951D0CE.png

実験:キーを無効化してみる

カスタマーマネージドキーの設定方法は以上なのですが、カスタマーマネージドキーをせっかく設定したのでユーザーがキーを無効化することでパイプから情報を参照できなくなっていることを確認しておきたいところです。やってみましょう。

まずは KMS コンソールからキーを無効化しておきます。

AA045C2F-3ED1-4B5E-8F36-DDA5B4AD2806_4_5005_c.jpeg

続いてパイプを確認してみましょう。

42245B2F-9988-49E8-9445-C674EA6763A7.png

まず、上段に「The KMS Key associated with this pipe is disabled or inaccessible. We will not be able to display the target parameters, enrichment parameters, or filter criteria until the key is accessible.」というメッセージが表示されるようになりました。
キーが無効化されてるので一部情報表示できませんよと言われてますね。

そして、先ほどまで 4 つのパイプコンポーネントが視覚的に確認出来たのですが、フィルタリングコンポーネント(タブも)が表示されなくなっていますね。
フィルタリングコンポーネントは丸々暗号化されているようで、どういう設定だったのか全く確認ができなくなっています。

ソースコンポーネントの内容やソースパラメータについては引き続き参照可能なようです。ここは暗号化されていないのか。

続いてエンリッチメントですが、こちらは今回だと Lambda を呼び出すようになっていたのですが、どの関数を関連付けしているのかまでは確認が出来ますね。
一方でエンリッチパラメータであるトランスフォームデータについては参照できなくなっています。

028D9508-58F8-42DE-B413-BD5D80E18FD1.png

最後にターゲットです。こちらもエンリッチメントと同様に対象の SNS トピックなどが確認可能なままでした。
ただし、トランスフォーマーの内容は参照できなくなっていますね。なるほど。

E97BB01F-BE25-4641-90A1-6565590DFABE.png

さいごに

本日は Amazon EventBridge のパイプ機能(EventBridge Pipes)でもカスタマーマネージドキーを使った暗号化が先日サポートされていたので、どのあたりが暗号化されるのか、キーの無効化で参照できなくなるのかを確認してみました。

基本的なパイプの構成やコンポーネントについてはカスタマーマネージドキーでは暗号化されていませんが、任意入力が可能なトランスフォーマーやパラメータ、フィルターなどについては暗号化されていることが確認出来ました。
例えばメールアドレスや何かしらのコードでフィルタリングするなど、そういった情報をパイプに含んでいても、カスタマーマネージドキーを使っていれば確実に破棄出来そうですね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.